package com.example.springbootpractice.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
实现：登录拦截器
1. 自己定义一个类, 需要实现 HandleInterceptor 接口, 然后重写 preHandle 方法
2. 再定义一个类, 需要用 @Configuration 注解, 再实现 WebMvcConfigurer 接口, 重写里面的 addInterceptors 方法
3. 将第一个类对象作为参数来增加拦截器, 需要使用 addInterceptor 方法, 再用 addPathPatterns 和 excludePathPatterns 来选择拦截对象
 */
@Component
public class LoginInterceptor implements HandlerInterceptor {
    @Override  // 拦截之前要做的事，返回 true 表示会使用目标方法，返回 false 则不会使用目标方法
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("开始拦截");
        HttpSession session = request.getSession();
        if (session != null && session.getAttribute("userinfo") != null) {
            return true;
        }
        response.setStatus(401);
        return false;
    }
}
